namespace ext.state
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// Abstract base class for state provider implementations. This class provides methods
	/// for encoding and decoding typed variables including dates and defines the
	/// Provider interface.
	/// </summary>
	/// <htmlSummary>
	/// Abstract base class for state provider implementations. This class provides methods
	/// for encoding and decoding &lt;b&gt;typed&lt;/b&gt; variables including dates and defines the
	/// Provider interface.
	/// </htmlSummary>
	/// <definedin>src\state\Provider.js</definedin>
	[ScriptName("Provider")]
	[ScriptNamespace("Ext.state")]
	[Imported()]
	public partial class Provider
	{
		
		#region Fields
		/// <summary>Fires when a state change occurs.</summary>
		/// <definedin>src\state\Provider.js</definedin>
		[ScriptName("statechangeEventName")]
		public const string StatechangeEventName = "statechange";
		#endregion
		
		#region Methods
		/// <summary>Returns the current value for a key</summary>
		/// <definedin>src\state\Provider.js</definedin>
		/// <param name="name">The key name</param>
		/// <param name="defaultValue">A default value to return if the key&apos;s value is not found</param>
		/// <returns>The state data</returns>
		[ScriptName("get")]
		public object Get(string name, object defaultValue)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Clears a value from the state</summary>
		/// <definedin>src\state\Provider.js</definedin>
		/// <param name="name">The key name</param>
		[ScriptName("clear")]
		public void Clear(string name)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Sets the value for a key</summary>
		/// <definedin>src\state\Provider.js</definedin>
		/// <param name="name">The key name</param>
		/// <param name="value">The value to set</param>
		[ScriptName("set")]
		public void Set(string name, object value)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Decodes a string previously encoded with {@link #encodeValue}.</summary>
		/// <definedin>src\state\Provider.js</definedin>
		/// <param name="value">The value to decode</param>
		/// <returns>The decoded value</returns>
		[ScriptName("decodeValue")]
		public object DecodeValue(string value)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Encodes a value including type information. Decode with {@link #decodeValue}.</summary>
		/// <definedin>src\state\Provider.js</definedin>
		/// <param name="value">The value to encode</param>
		/// <returns>The encoded value</returns>
		[ScriptName("encodeValue")]
		public string EncodeValue(object value)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>Fires when a state change occurs.</summary>
		/// <definedin>src\state\Provider.js</definedin>
		[ScriptName("statechange")]
		public event ext.auto.Delegate_ext_state_Provider_And_System_String_And_System_String Statechange;
		#endregion
	}
}
